#include <bits/stdc++.h>
using ll = int64_t;
using namespace std;

const ll maxn{ll(100+5)};
ll n,m,k,a[maxn][maxn],b[maxn][maxn],c[maxn][maxn];

struct CinN{
    char c;
    ll n,w;
    CinN &operator>>(ll &num)noexcept{
        c=n=0;
        w=1;
        while(!isdigit(c)){
            if(c=='-')w=-1;
            c=getchar();
        }
        while(isdigit(c)){
            n=n*10+c-'0';
            c=getchar();
        }
        num=n*w;
        return *this;
    }
}cinn;

#define cin cinn

int main(){
    iostream::sync_with_stdio(0)/*,cin.tie(0),cout.tie(0)*/;
    cin>>n>>m>>k;
    const auto rdmtx = [](ll (&mtx)[maxn][maxn],ll const &n,ll const &m){
        for(ll i{1};i<=n;i++){
            for(ll j{1};j<=m;j++){
                cin>>mtx[i][j];
            }
        }
    };
    const auto pmtx = [](ll (&mtx)[maxn][maxn],ll const &n,ll const &m){
        for(ll i{1};i<=n;i++){
            for(ll j{1};j<=m;j++){
                cout<<mtx[i][j]<<' ';
            }
            cout<<'\n';
        }
    };
    rdmtx(a,n,m);
    rdmtx(b,m,k);
    for(ll l{1};l<=k;l++)
        for(ll i{1};i<=n;i++)
            for(ll j{1};j<=m;j++){
                c[i][l]+=a[i][j]*b[j][l];
            }
    pmtx(c,n,k);
}